Network Address Translation (NAT) refers to a technique that involves re-writing the source and/or destination addresses of network packets as they pass through a router or firewall. A NAT device, such as a NAT-enabled router, allows multiple hosts on a private network to access a public network such as the Internet using a single public network address, such as an Internet Protocol (IP) address. A NAT device, however, sometimes makes it difficult to provide connectivity between a device on a private network and a device on a public network or another private network.
To compensate for end-to-end connectivity problems, certain protocols have been developed to allow a public client to traverse a NAT device. One such protocol is the Session Traversal Utilities for NAT (STUN) protocol. The STUN protocol allows a public client to obtain a transport address which may be useful for receiving packets from a peer. Addresses obtained by STUN, however, may not be usable by all peers. The STUN addresses may not work depending on the topological conditions of the network. To augment or enhance the STUN protocol, a public-accessible relay server may be implemented to relay packets of media information between any peers that can send packets to the public Internet, including public peers and private peers. The Traversal Using Relay NAT (TURN) protocol is one protocol designed to allow a client to obtain IP addresses and ports from such a relay server.
When communicating between a public peer and a private peer using a relay server, however, the TURN protocol requires opening a range of ports on the public-side of the relay servers. Directly exposing a relay server to a public network may pose an elevated security risk, among other problems. Accordingly, there may be a need for improved techniques for a private peer to communicate media information through relay servers with a public peer, thereby improving connectivity across multiple networks implementing various NAT devices.